package com.glink.manage.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.glink.common.exception.GeneralSimpleException;
import com.glink.manage.domain.RoleBean;
import com.glink.manage.dto.role.RolePageRequestDTO;
import com.glink.manage.dto.role.RoleSaveRequestDTO;
import com.glink.manage.dto.role.RoleUpdateRequestDTO;
import com.glink.manage.vo.role.RoleBaseVO;
import com.glink.manage.vo.role.RoleSimpleVO;
import com.glink.manage.vo.role.RoleUserVO;

import java.util.List;

public interface RoleService extends IService<RoleBean> {
    /**
     * 新增角色信息
     * @param dto 角色信息
     * @return 新增状态
     * @throws GeneralSimpleException 异常信息
     */
    boolean insertRole(RoleSaveRequestDTO dto) throws GeneralSimpleException;

    /**
     * 修改角色信息
     * @param dto 角色信息
     * @return 修改状态
     * @throws GeneralSimpleException 异常信息
     */
    boolean modifyRole(RoleUpdateRequestDTO dto) throws GeneralSimpleException;

    RoleBaseVO findByRoleId(String roleId);

    int deleteRoleById(String roleId) throws GeneralSimpleException;

    IPage<RoleUserVO> getRolePage(RolePageRequestDTO dto);

    /**
     * 根据角色ID查询角色名称
     * @param roleIdList 角色ID列表
     */
    List<RoleBaseVO> findRoleNameByRoleIdIn(List<String> roleIdList);

    /**
     * 获取角色列表
     * @return 角色列表
     */
    List<RoleSimpleVO> getRoleList();

    /**
     * 根据角色名称查询角色ID
     * @param defaultAdminRole 角色名称
     */
    List<String> findRoleIdByRoleName(String defaultAdminRole);
}
